home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
kowin
/
archive
/
apl
/
tvv132.lzh
/
key.c
next >
Wrap
C/C++ Source or Header
|
1995-02-24
|
3KB
|
146 lines
/*
MicroView.win Copyright 1995 小笠原博之
SPS-NET: SPS0783 COR. / oga@dgw.yz.yamagata-u.ac.jp
*/
#include "microview.h"
#define DX (bp->font_x*8) /*32*/
#define Ctrl(a) ((a)&0x1f)
#define Esc(a) ((a)|0x100)
void
KeyExec( info, bp )
EventInfo *info;
T_BUFP *bp;
{
int x= HS_WindowGetViewSizeX(bp->awp),
y= HS_WindowGetViewSizeY(bp->awp);
static int escflag= FALSE;
unsigned int code= info->KeyCode;
if( y >= 24 )
y-= 24;
if( escflag ){
if( code >= 'A' && code <= 'Z' )
code |= 0x20; /* to lower */
code |= 0x100;
escflag= FALSE;
}
switch( code ){
/* 1 line scroll up */
case '1':
case 'J':
case 'N':
case Ctrl('m'):
case Ctrl('j'):
WindowScroll( bp->bwp, 0, bp->font_z );
break;
/* 1 line scroll down */
case '7':
case 'P':
case 'K':
case Ctrl('k'):
WindowScroll( bp->bwp, 0, -bp->font_z );
break;
/* 1 dot scroll up */
case '3':
WindowScroll( bp->bwp, 0, 1 );
break;
/* 1 dot scroll down */
case '9':
WindowScroll( bp->bwp, 0, -1 );
break;
/* scroll up */
case '2':
case Ctrl('x'):
case Ctrl('n'):
case FuncKeyDown:
case 'j':
WindowScroll( bp->bwp, 0, bp->font_z*3 );
break;
/* scroll down */
case '8':
case Ctrl('p'):
case Ctrl('e'):
case 'p':
case FuncKeyUp:
case 'k':
WindowScroll( bp->bwp, 0, -bp->font_z*3 );
break;
/* scroll right */
case '6':
case FuncKeyRight:
case 'l':
WindowScroll( bp->bwp, DX, 0 );
break;
/* scroll left */
case '4':
case FuncKeyLeft:
case 'h':
WindowScroll( bp->bwp, -DX, 0 );
break;
/* exchange top for bottom */
case FuncKeyClr:
case FuncKeyHome:
case 'G':
if( !HS_WindowGetHomeY(bp->bwp) )
goto bottom;
/* top of file */
case Esc('<'):
case '<':
case FuncKey+1:
WindowScroll( bp->bwp, 0, -bp->line*bp->font_z);
break;
/* bottom of file */
bottom:
case Esc('>'):
case '>':
case FuncKey+2:
WindowScroll( bp->bwp, 0, bp->line*bp->font_z );
break;
/* next page */
case '=':
case 'f':
case Ctrl('f'):
case Ctrl('v'):
case Ctrl('c'):
case FuncKeyRollUp:
case ' ':
WindowScroll( bp->bwp, 0, y );
break;
/* back page */
case '+':
case Esc('v'):
case Ctrl('b'):
case Ctrl('r'):
case Ctrl('z'):
case Ctrl('h'):
case 'b':
case FuncKeyRollDown:
WindowScroll( bp->bwp, 0, -y );
break;
/* half page */
case Ctrl('u'):
WindowScroll( bp->bwp, 0, -y/2 );
break;
case Ctrl('d'):
WindowScroll( bp->bwp, 0, y/2 );
break;
/* Meta */
case ':':
case Ctrl('['): /* ESC */
escflag= TRUE;
break;
/* exit */
case Esc('q'):
case Esc('e'):
case FuncKey+10:
case FuncKeyDel:
WindowSendSignal( WindowProcessID, SignalKill, 0 );
}
}